﻿
/*
 * 2023/2/27
 * 异常过滤器的使用
 * 1、继承相应的过滤器的接口
 * 2、实现接口
 * 3、为了让系统识别我们定义的过滤器，需要把这个过滤器进行注册（全局）
 *    在Programe.cs中注册
 * 
 * **/
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;

namespace Max.PH5_2008A.ShoppingCode.API.MyFilter
{
    public class MyExceptionFilter : IExceptionFilter
    {
        public void OnException(ExceptionContext context)
        {
            if (!context.ExceptionHandled)
            {
                /*
                 * 这对是异常信息的处理：在控制台输出
                 * **/
                //Console.WriteLine(context.Exception.Message);

                /*
                 * 输出友好提示
                 * **/
                context.Result = new JsonResult(new { code = 500, msg = "服务器内部错误，请与管理员联系！" });

                //还把错误信息记录到日志文件中
                var log = NLog.LogManager.GetCurrentClassLogger();
                log.Error(context.Exception.Message);

            }
            context.ExceptionHandled = true;
        }
    }
}
